﻿using System;
using biz.ritter.javapi.util;

namespace Nofs.Net.Common.Interfaces.Domain
{
    public interface IFileObjectStat : IDomainObject
    {
        int getMode(); // throws Exception;
        int getNLink();
        int getUID(); // throws Exception;
        int getGID(); // throws Exception;
        int getRDev();
        long getFileSize();
        long getBlocks();
        int getATime(); // throws Exception;
        int getMTime(); // throws Exception;
        int getCTime(); // throws Exception;

        void setMode(int value); // throws Exception;
        void setNLink(int value);
        void setUID(int value); // throws Exception;
        void setGID(int value); // throws Exception;
        void setRDev(int value);
        void setFileSize(long value);
        void setBlocks(long value);
        void setATime(int value); // throws Exception;
        void setMTime(int value); // throws Exception;
        void setCTime(int value); // throws Exception;

        bool Equals(IFileObjectStat stat);

        UUID ParentID();
        String ParentName();
        void SetParentName(String parentName);

        IFileObjectStat Clone(); // throws Exception;

        IExtendedAttribute GetXAttr(String name); // throws Exception;
        void AddXAttr(IExtendedAttribute attr);
        bool RemoveXAttr(IExtendedAttribute attr); // throws Exception;
        LinkedList<IExtendedAttribute> GetAllXAttr();
    }

}
